1. Technical Field
The invention relates generally to managing processes, and more specifically, to an autonomic solution that allocates resources to a process based on the resources available and an anticipated benefit for the process.
2. Background Art
In systems executing multiple processes, it is frequently desired to dynamically allocate resources (e.g., CPUs, CPU time, memory, storage, bandwidth, etc.) to one or more of the processes. For example, a process may be running behind a target schedule (“lagging”). In order to assist the process in getting back on schedule, additional resources can be dynamically allocated to the process so that it executes faster. Currently, processes are generally assigned to a particular “service class” for the allocation of resources. Each service class indicates a priority with which the corresponding process is assigned resources. For example, a service class can indicate an execution priority for a given process (e.g., high, normal, low). In this solution, a high priority process is given resource preference over a normal priority process which in turn is given resource preference over a low priority process. The allocation of resources can be dynamically altered by allowing each process to change its service class. As a result, a lagging process can request that its service class be increased, so that it is given a higher resource preference.
However, the service class solution has several limitations. For example, the change in service class is often made on a process by process basis. As a result, other processes competing for resources and/or other processes that are held up by a particular process are not considered in the resource allocation. Further, the additional resources are frequently allocated to a process without considering whether the additional resources will be effective in improving the performance of the process or whether another process may benefit more from the resources. Additionally, the service class solution at least implicitly assumes that additional resources will always be available. This assumption is especially troublesome when a system experiences a high demand for its resources. In this situation, many processes may start to lag, which can eventually result in the service class for all processes being raised, without improving any of the lagging processes.
As a result, a need exists for an improved method, system and program product for managing processes. In particular, a need exists for an autonomic solution that allocates resources based on the resources available, and an anticipated benefit for the various processes sharing the resources.